package com.ruihang.generalibrary.utils;

import android.util.SparseBooleanArray;

/**
 * 多网络访问或多命令的帮助类，此帮助类只运行一个“同类型的”网络访问或命令
 * Created by Administrator on 2017/1/7.
 */

public class GroupOrderHelperSingled {
    private Object syncObj;

    //    private ArraySet<String> orderTags;
    private SparseBooleanArray count;

//    private int count;

    public GroupOrderHelperSingled() {
        syncObj = new Object();
        count = new SparseBooleanArray();
    }

    /**
     * 添加一个，表示正进行的网络访问或命令等增加一个
     *
     * @param key 命令或网络访问的键，自定义的键，也就是类型
     * @return 是否添加成功(如果添加时存在会返回false)
     */
    public boolean addOne(int key) {
        synchronized (syncObj) {
            int index = count.indexOfKey(key);
            count.put(key, true);
            return index < 0;
        }
    }

    /**
     * 移除一个，表示进行的网络访问或命令减少一个
     *
     * @return 此组是否已经没有了其他网络访问或命令
     */
    public boolean removeOne(int key) {
        synchronized (syncObj) {
            count.delete(key);
            return count.size() <= 0;
        }
    }

    public int getCount() {
        return count.size();
    }
}
